﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CLab.Base;
using System.Collections;
using System.Data;
using CLab.Common.Objects;
using CLab.Common.Constantes;

namespace CLab.PagAdminLab
{
    public partial class CatDoctoresRegistro : PageBase
    {
        #region Eventos
        protected void Page_Init(object sender, EventArgs e)
        {
            IdItem = 1;
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!Page.IsPostBack)
                {
                    PreparaPagina();
                    if (ViewParametros.Count > 0)
                    {
                        object idDoctor= ViewParametros.Find(delegate(Parametro p) { return p.Nombre == "IdDoctor"; }).Valor;
                        ObtenInfo(idDoctor);
                    }
                }
            }
            catch (Exception ex)
            {
                Master.alert(ex.Message);
            }
        }

        protected void Page_LoadComplete(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                SetFocus(txtNombre.ControlTextBox.ClientID);
            }
        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                DoctorServiceReference.DoctorServiceClient servicio = new DoctorServiceReference.DoctorServiceClient();
                DoctorServiceReference.Doctor doc = new DoctorServiceReference.Doctor();
                doc.IdLaboratorio = SessionLaboratorio.IdLaboratorio;
                doc.IdSucursal = SessionLaboratorio.IdSucursal;
                doc.Nombre = txtNombre.Text;
                doc.Direccion = txtDomicilio.Text;
                doc.IpMod = Request.UserHostAddress;
                //doc.IpMod = Request.UserHostName;
                //doc.IpMod = Request.ServerVariables["REMOTE_ADDR"];
                //doc.IpMod = Request.ServerVariables["REMOTE_HOST"];
                doc.Telefono = TxtTelefono.Text;
                doc.IdUsuarioMod = SessionUsuario.IdUsuario;
                doc.IdDoctor = CLab.Common.Util.Convert.ToNInt(hdnIdDoctor.Value);
                hdnIdDoctor.Value = servicio.RegistraDoctor(doc).ToString();
                Master.alertExito("Regresar();", true);
            }
            catch (Exception ex)
            {
                Master.alert(ex.Message);
            }
        }

        protected void btnNuevo_Click(object sender, EventArgs e)
        {
            Nuevo();
        }
        #endregion

        #region Metodos
        private void PreparaPagina()
        {
            txtNombre.EnabledValidator = true;
            txtNombre.MaxLength = 300;
            TxtTelefono.MaxLength = 20;
            btnNuevo.CausesValidation = false;
            Master.TituloPagina = "Registrar doctor";
        }

        private void Nuevo()
        {
            txtDomicilio.Text = "";
            txtNombre.Text = "";
            TxtTelefono.Text = "";
            hdnIdDoctor.Value = "";
            SetFocus(txtNombre.ControlTextBox.ClientID);
        }

        private void ObtenInfo(object idDoctor)
        {
            ArrayList parametros = new ArrayList();
            ConsultaServiceReference.ConsultaServiceClient servicio = new ConsultaServiceReference.ConsultaServiceClient();
            //Parametros
            parametros.Add(CreaParametroConsulta("@psNombre", null, ConsultaServiceReference.Parameter.vEnumType.VarChar));
            parametros.Add(CreaParametroConsulta("@pnIdDoctor", CLab.Common.Util.Convert.ToNInt(idDoctor), ConsultaServiceReference.Parameter.vEnumType.Int));
            parametros.Add(CreaParametroConsulta("@pnIdLaboratorio", CLab.Common.Util.Convert.ToNInt(SessionLaboratorio.IdLaboratorio), ConsultaServiceReference.Parameter.vEnumType.Int));
            ConsultaServiceReference.Parameter[] prms = new ConsultaServiceReference.Parameter[parametros.Count];
            parametros.CopyTo(prms);
            //Ejecuta conulta
            DataSet ds = servicio.EjecutaConsultaConParametros("spObtenDoctores", prms);
            txtNombre.Text = ds.Tables[0].Rows[0][Columnas.Nombre].ToString();
            txtDomicilio.Text = ds.Tables[0].Rows[0][Columnas.Direccion].ToString();
            TxtTelefono.Text = ds.Tables[0].Rows[0][Columnas.Telefono].ToString();
            hdnIdDoctor.Value = idDoctor.ToString();
        }
        #endregion
    }
}